查看原文
其他

Golang 命令行框架对比:Cobra VS urfave/cli

K8sCat 源自开发者
2024-08-28

当开发者使用 Go 语言开发命令行应用时,通常会选用一些成熟的框架来简化开发过程。在众多选项中,Cobra 和 urfave/cli 是两个相当受欢迎的库。下面,我们将详细对比这两个库的特点、使用情况、文档支持与活跃度,来帮助开发者做出选择。

Golang Cobra

  • 特点

    • 功能丰富:Cobra 提供了一组简单的接口来创建功能强大的现代命令行应用。它支持创建命令、设置标志(flags)以及解析参数。
    • 使用范围:Cobra 拥有广泛的用户基础,它被许多知名的 Go 项目采用来构建命令行工具,其社区活跃,开发者众多。
    • 详细文档:Cobra 有着详尽的文档,这使得开发人员可以更容易地上手和使用它来构建 CLI 应用。
    • 活跃的开发:Cobra 框架一直在活跃开发中,定期添加新的特性以增强其功能。
  • 样例

import (
  "github.com/spf13/cobra"
  "fmt"
)

func main() {
  var rootCmd = &cobra.Command{
    Use:   "hello",
    Short: "Hello world command",
    Run: func(cmd *cobra.Command, args []string) {
      fmt.Println("Hello, world!")
    },
  }

  rootCmd.Execute()
}

上述代码演示了如何使用 Cobra 创建一个简单的 "hello world" 命令。

urfave/cli

  • 特点

    • 简约风格:urfave/cli 提供了一个简单的库用于 Go 语言构建命令行应用,它注重简单性和易用性。
    • 使用范围urfave/cli 在那些倾向于简洁方法构建命令行工具的开发者中间颇受欢迎,它提供创建 CLI 应用必需的基本特性。
    • 良好文档urfave/cli 也有良好的文档支持,帮助开发者理解如何有效利用这个库。
    • 维护情况:值得注意的是,即使 urfave/cli 仍然是功能性的并且可以使用,但这个库不再活跃维护。这可能是开发者在选择库时需要考量的一个因素。
  • 样例

import (
  "os"
  "github.com/urfave/cli"
  "fmt"
)

func main() {
  app := cli.NewApp()
  app.Name = "greet"
  app.Usage = "fight the loneliness!"
  app.Action = func(c *cli.Context) error {
    fmt.Println("Hello friend!")
    return nil
  }

  app.Run(os.Args)
}

上述代码展示了如何使用 urfave/cli 创建一个简单的问候命令。

结论

总结来说,Cobra 和 urfave/cli 都是高效的 Go 语言命令行应用构建工具。Cobra 功能更为丰富且被广泛使用,而 urfave/cli 则提供了简单和易用性。开发者可以根据自己项目的需求和偏好来选择合适的库。要注意的是,如果你需要长期的维护和持续更新的支持,Cobra 可能是更好的选择。而对于小型或者简单的项目,如果你喜欢更加直接无装饰的工具,urfave/cli 或许更合适。

文章精选

使用 Go 语言连接并操作 SQLite 数据库

Go语言官方团队推荐的依赖注入工具

替代zap,Go语言官方实现的结构化日志包

Go语言常见错误 | 不使用function option模式

必看| Go语言项目结构最佳实践


点击关注并扫码添加进交流群
领取「Go 语言」学习资料

继续滑动看下一个
源自开发者
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存